Technote 1180
Sherlock's Find By Content Library
|
äTóv
Mac OS 8.6 Ç≈íÒãüÇ≥ÇÍÇΩÉRÉìÉeÉìÉcåüçı (FBC)
ã@î\ÇÕÅAÅuã@î\ägí£ÅvÉtÉHÉãÉ_Ç…èÌíìÇ∑ÇÈ PowerPC Code Fragment
Manager ÉâÉCÉuÉâÉäÇΔǵǃÉCÉìÉvÉäÉÅÉìÉgÇ≥ÇÍǃǢNjÇ∑ÅBSherlock
ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕ FBC
ÇÃÉNÉâÉCÉAÉìÉgÇ≈džÇËÅADZÇÃã§óLÉâÉCÉuÉâÉäÇâÓǵǃ FBC
ÉTÅ[ÉrÉXÇ…ÉAÉNÉZÉXǵNjÇ∑ÅBÉfÉxÉçÉbÉpÇ™äJî≠Ç∑ÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìLJÅADZÇÃÉâÉCÉuÉâÉäÇ™íÒãüÇ∑ÇÈåüçıã@î\Ç…ÉAÉNÉZÉXÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅADZÇÃã§óLÉâÉCÉuÉâÉäÇâÓǵǃêVǵǢ
FBC
ã@î\Ç…ÉAÉNÉZÉXÇ≈Ç´ÇÈêªïiÇäJî≠Ç∑ÇÈï˚ñ@DžǬǢǃê‡ñæÇµÇ‹Ç∑ÅB
FBC
Ç÷ÇÃÉRÉìÉpÉCÉâÉCÉìÉ^ÉtÉFÅ[ÉXÇÕÅAÅuFindByContent.hÅvÇΔǢǧ C
ÇÃÉwÉbÉ_ÉtÉ@ÉCÉãÇ…é˚ÇflÇÁÇÍǃǢNjÇ∑ÅBÇ‹ÇΩÅAÉäÉìÉNÇñ⁄ìIÇΔǵǃÅAFBC
ÇÉCÉìÉvÉäÉÅÉìÉgÇ∑ÇÈ Code Fragment Manager
ÉâÉCÉuÉâÉäÇÕÅAÅuFind By
ContentÅvÇΔǢǧñºëOÇ≈Ç∑ÅBDZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ…ãLç⁄Ç≥ÇÍǃǢÇÈ
FBC
ÉãÅ[É`ÉìÇégópÇ∑ÇÈÉfÉxÉçÉbÉpÇÕÅADZÇÃÉâÉCÉuÉâÉäÇ…ëŒÇµÇƒé„Ç¢ÉäÉìÉN
(Weak-link)
ÇçsÇ¢ÅADZÇÍÇÁÇÃÉãÅ[É`ÉìÇÃÇ¢Ç∏ÇÍÇ©ÇåƒÇ—èoÇ∑ëOÇ…ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃì‡ïîÇ©ÇÁ
Gestalt ÉZÉåÉNÉ^ÇÉ`ÉFÉbÉNǵǃÇ≠ÇæÇ≥Ç¢ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
ÉRÉìÉeÉìÉcåüçıÇ™égópâ¬î\Ç≈džÇÈǩǫǧǩÇÃîªíf
FBC Ç≈ÇÕ 2 ǬÇà Gestalt ÉZÉåÉNÉ^ÇíËã`ǵǃǢNjÇ∑ÅBFBC
ÇÃÉNÉâÉCÉAÉìÉgÇÕÅAåƒÇ—èoǵÇçsǧëOÇ…ìKêÿÇ»ÉoÅ[ÉWÉáÉìÇÃÉCÉìÉvÉäÉÅÉìÉeÅ[ÉVÉáÉìÇ™égópâ¬î\Ç≈džÇÈDZÇΔÇåüèÿÇ∑ÇÈïKóvǙdžÇËÅAé¿ç€ÇÃåüçıÇé¿çsÇ∑ÇÈëOÇ…
FBC ÇÃçıà¯çÏê¨ÉXÉeÅ[É^ÉXÇÉ`ÉFÉbÉNÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
|
enum {
gestaltFBCVersion = 'fbcv',
gestaltFBCCurrentVersion = 0x0011
};
|
gestaltFBCVersion
ÉZÉåÉNÉ^ÇÕÅAÉRÉìÉsÉÖÅ[É^è„Ç…ÉCÉìÉXÉgÅ[ÉãÇ≥ÇÍǃǢÇÈ FBC
ÇÃÉoÅ[ÉWÉáÉìÇï‘ǵNjÇ∑ÅBÉfÉxÉçÉbÉpÇÕÅADZÇÃÉoÅ[ÉWÉáÉìÇΔÅAÉvÉçÉOÉâÉÄÇÃÉRÉìÉpÉCÉãÇ…égópǵÇΩÉCÉìÉ^ÉtÉFÅ[ÉXÇÃÉoÅ[ÉWÉáÉì
(gestaltFBCCurrentVersion ÇégǡǃéÊìæÇ≈Ç´ÇÈ)
Çî‰ärǵǃÅAFBC
Ç÷ÇÃåƒÇ—èoǵÇçsǧDZÇΔÇ™à¿ëSÇ≈džÇÈǩǫǧǩÇîªífÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBgestaltFBCVersion
ÇÃÉoÅ[ÉWÉáÉìÇ™ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉRÉìÉpÉCÉãÇ…égópǵÇΩÉCÉìÉ^ÉtÉFÅ[ÉXÇÃÉoÅ[ÉWÉáÉìÇΔàŸÇ»ÇÈèÍçáÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ÇÕ
FBC Ç÷ÇÃåƒÇ—èoǵÇçsÇÌǻǢÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅB
|
enum {
gestaltFBCIndexingState = 'fbci',
gestaltFBCindexingSafe = 0,
gestaltFBCindexingCritical = 1
};
|
gestaltFBCIndexingState ÉZÉåÉNÉ^ÇÕÅAFBC
ÇÃåªç›ÇÃçıà¯çÏê¨ÉXÉeÅ[É^ÉXÇ…ä÷Ç∑ÇÈèÓïÒÇï‘ǵNjÇ∑ÅBîCà”ÇÃéûì_Ç≈ÅAçıà¯çÏê¨ÉXÉeÅ[É^ÉXÇÕÅAgestaltFBCindexingSafe
Ç‹ÇΩÇÕ gestaltFBCindexingCritical
ÇÃÇ¢Ç∏ÇÍǩDžǻÇËÇ‹Ç∑ÅBÉXÉeÅ[É^ÉXÇ™
gestaltFBCindexingCritical ÇÃèÍçáÅAÉXÉeÅ[É^ÉXÇ™
gestaltFBCindexingSafe
Ç…ñflÇÈÇ‹Ç≈ÅAé¿çsǵÇΩåüçıÇÕìØä˙íxâÑÇ…ä◊ǡǃǵNjǢNjÇ∑ÅBàÍï˚ÅAï‘Ç≥ÇÍÇΩ
FBC çıà¯çÏê¨ÉXÉeÅ[É^ÉXÇ™ gestaltFBCindexingSafe
Ç≈džÇÈÇΔÅAÇ∑Ç◊ǃÇÃåüçıÇ™ë¶ç¿Ç…é¿çsÇ≥ÇÍÇ‹Ç∑ÅBìØä˙íxâÑÇâÒîÇ∑ÇÈÇ…ÇÕÅAÉfÉxÉçÉbÉpÇÕ
gestaltFBCIndexingState
ÉZÉåÉNÉ^ÇÉ`ÉFÉbÉNǵǃÅAï‘Ç≥ÇÍÇΩçıà¯çÏê¨ÉXÉeÅ[É^ÉXÇ™
gestaltFBCindexingSafe ÇÃÇΔÇ´ÇæÇØ FBC
Ç÷ÇÃåƒÇ—èoǵÇçsǧÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
åüçıÉZÉbÉVÉáÉìÇégÇ¡ÇΩçÏãΔ
FBC
ÇÕÅAÉNÉâÉCÉAÉìÉgÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÅuåüçıÉZÉbÉVÉáÉìÅvÇÃÉIÅ[ÉvÉìÇΔÉNÉçÅ[ÉYÇçsǧDZÇΔÇãñâ¬ÇµÇ‹Ç∑ÅBåüçıÉZÉbÉVÉáÉìÇ…ÇÕÅAåüçıÇÃåãâ ÅAå©Ç¬Ç©Ç¡ÇΩèåèÇ…àÍívÇ∑ÇÈÉtÉ@ÉCÉãÇÃÉäÉXÉgÇä‹ÇflǃÅAåüçıÇ…ä÷Ç∑ÇÈÇ∑Ç◊ǃÇÃèÓïÒÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅBFBC
ÇÃÉNÉâÉCÉAÉìÉgÇÕÅADZÇÃÉZÉNÉVÉáÉìÇ≈íËã`Ç≥ÇÍǃǢÇÈÉãÅ[É`ÉìÇégǡǃÅAåüçıÉZÉbÉVÉáÉìÇ÷ÇÃéQèΔÇÃéÊìæÅAåüçıÉZÉbÉVÉáÉìÇÃïœçXÅAÇ®ÇÊÇ—åüçıÉZÉbÉVÉáÉìÇÃÉXÉeÅ[É^ÉXÇ…ëŒÇ∑ÇÈÉNÉGÉäÅ[Çé¿çsÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBåüçıÉZÉbÉVÉáÉìÇ÷ÇÃéQèΔÇÕÅAFBC
ÉâÉCÉuÉâÉäÇ…ÇÊǡǃèäóLÇ≥ÇÍǃǢÇÈ opaque
É|ÉCÉìÉ^å^ÇΔǵǃíËã`Ç≥ÇÍÇ‹Ç∑ÅB
|
typedef struct OpaqueFBCSearchSession* FBCSearchSession;
|
åüçıÉZÉbÉVÉáÉìç\ë¢ëÃÇ…ÉAÉNÉZÉXÇ∑ÇÈÇΔÇ´ÇÕÅADZDZÇ≈íËã`Ç≥ÇÍǃǢÇÈÉãÅ[É`ÉìÇÃÇ›ÇégópǵǃÇ≠ÇæÇ≥Ç¢ÅBDZÇÃíÜÇ…ÇÕÅAåüçıÉZÉbÉVÉáÉìÇÃï°êªÇ‚îjä¸ÇçsǧÇΩÇflÇ…ìKêÿÇ»
FBC
ÉãÅ[É`ÉìÇégópÇ∑ÇÈDZÇΔLJä‹Ç‹ÇÍÇ‹Ç∑ÅBåüçıÉZÉbÉVÉáÉìÇÕï°éGÇ»ÉÅÉÇÉäç\ë¢ëÃÇ≈ÅAǪÇÃíÜÇ…ÇÕÅAåüçıÉZÉbÉVÉáÉìÇï°êªÇ∑ÇÈÇΔÇ´Ç…ÉRÉsÅ[ǵÇΩÇËÅAåüçıÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÇâèúÇ∑ÇÈÇΔÇ´Ç…îjä¸Ç∑ÇÈïKóvÇÃdžÇÈǪÇÃëºÇÃÉfÅ[É^Ç÷ÇÃÉ|ÉCÉìÉ^Ç™ä‹Ç‹ÇÍÇ‹Ç∑ÅB
FBC
ÉâÉCÉuÉâÉäÇégópÇ∑ÇÈÇΔÇ´Ç…é¿çsÇ∑ÇÈí èÌÇÃèàóùÇÃó¨ÇÍÇÕÅAåüçıÉZÉbÉVÉáÉìÇÃçÏê¨ÅAÉ^Å[ÉQÉbÉgÇΔÇ»ÇÈì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄÇ…çáÇÌÇπÇΩåüçıÉZÉbÉVÉáÉìÇÃê›íËÅAåüçıÇÃé¿çsÅAåüçıåãâ ÇÃÉNÉGÉäÅ[ÅAǪǵǃåüçıÇÃîjä¸ÇΔǢǧèáèòÇ…Ç»ÇËÇ‹Ç∑ÅBDZÇÃǟǩDžLJâ¬î\Ç»åüçıï˚ñ@ÇΔǵǃÅAåüçıÉZÉbÉVÉáÉìÇçƒèâä˙âªÇµÇƒÅAǪÇÍÇï ÇÃåüçıÇ≈LJåJÇËï‘ǵégópÇ∑ÇÈã@î\ÅAåüçıÉZÉbÉVÉáÉìÇÃÉNÉçÅ[ÉjÉìÉOÇçsÇ¢ÅAÉNÉçÅ[ÉìÇégǡǃÇ≥ÇÁÇ…åüçıÇé¿çsÇ∑ÇÈã@î\ÅAÇ‹ÇΩåüçıåãâ Çì¡íËÇÃÉfÉBÉåÉNÉgÉäÇ…ï€ë∂Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇ…êßå¿Ç∑ÇÈã@î\ǻǫǙópà”Ç≥ÇÍǃǢNjÇ∑ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
åüçıÉZÉbÉVÉáÉìÇÃÉZÉbÉgÉAÉbÉv
ÅuÉäÉXÉg
6ÅvÇ…é¶Ç∑ÇÊǧDžÅAêVǵǢÉZÉbÉVÉáÉìÇçÏê¨ÇµÇƒåüçıÇÃèáèòÇêÆÇ¶ÇÈÇ…ÇÕÅAFBC
ÉâÉCÉuÉâÉäÇ÷ÇÃè≠Ç»Ç≠ÇΔLJ 2
ǬÇÃåƒÇ—èoǵǙïKóvÇ…Ç»ÇËÇ‹Ç∑ÅBDZÇÃÉTÉìÉvÉãÇ≈ÇÕÅAêVǵǢåüçıÉZÉbÉVÉáÉìÇ™çÏê¨Ç≥ÇÍÅAǪÇÍÇ™çıà¯ÉtÉ@ÉCÉãÇä‹ÇfiÇ∑Ç◊ǃÇÃÉçÅ[ÉJÉãÉ{ÉäÉÖÅ[ÉÄÇåüçıÇ∑ÇÈÇÊǧDžê›íËÇ≥ÇÍÇ‹Ç∑ÅBFBCAddAllVolumesToSession
ÇåƒÇ—èoÇ∑DZÇΔÇ≈ÅAçıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈÉçÅ[ÉJÉãÉ{ÉäÉÖÅ[ÉÄÇÇ∑Ç◊ǃåüçıÇ∑ÇÈåüçıÉZÉbÉVÉáÉìÇ™é©ìÆìIÇ…ê›íËÇ≥ÇÍÇ‹Ç∑ÅB
|
|
/* SimpleSetUpSession ÇÕêVǵǢåüçıÉZÉbÉVÉáÉìÇäÑÇËìñǃÅA
FBCSearchSession ílÇ *session ÉpÉâÉÅÅ[É^Ç…ï‘Ç∑ÅBÉGÉâÅ[Ç™î≠ê∂
Ç∑ÇÈÇΔÅA*session ÇÕéËǬǩÇ∏ÇÃNjNjécÇ≥ÇÍÇÈ */
OSErr SimpleSetUpSession(FBCSearchSession* session) {
OSErr err;
FBCSearchSession newsession;
/* ÉçÅ[ÉJÉãïœêîÇÉZÉbÉgÉAÉbÉvÇ∑ÇÈ */
err = noErr;
newsession = NULL;
if (session == NULL) return paramErr;
/* êVǵǢÉZÉbÉVÉáÉìÇçÏê¨Ç∑ÇÈ */
err = FBCCreateSearchSession(&newsession);
if (err != noErr) goto bail;
/* égópâ¬î\Ç»ÉçÅ[ÉJÉãÉ{ÉäÉÖÅ[ÉÄÇÇ∑Ç◊ǃåüçıÇ∑ÇÈ */
err = FBCAddAllVolumesToSession(newsession, false);
if (err != noErr) goto bail;
/* åãâ Çäiî[ǵǃèàóùÇèIóπÇ∑ÇÈ */
*session = newsession;
return noErr;
bail:
if (newsession != NULL)
FBCDestroySearchSession(newsession);
return err;
}
|
|
ÉäÉXÉg 6
çıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈÉçÅ[ÉJÉãÉ{ÉäÉÖÅ[ÉÄÇÇ∑Ç◊ǃåüçıÇ∑ÇÈåüçıÉZÉbÉVÉáÉìÇÃÉZÉbÉgÉAÉbÉv
|
åüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÉfÉxÉçÉbÉpÇ™ÇÊÇËè⁄ç◊Ç…êßå‰Ç≈Ç´ÇÈÇÊǧDžÅAFBC
Ç…ÇÕÇ≥NjǥNjǻÉãÅ[É`ÉìÇÃÉZÉbÉgÇ™ópà”Ç≥ÇÍǃǢNjÇ∑ÅBÅuÉäÉXÉg
7ÅvÇÕÅAêVǵǢåüçıÉZÉbÉVÉáÉìÇê›íËǵǃÅAì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄÇÃÉZÉbÉgÇåüçıÇ∑ÇÈï˚ñ@ÇãÔëÃìIÇ…é¶ÇµÇƒÇ¢Ç‹Ç∑ÅB
|
|
/* SetUpVolumeSession ÇÕêVǵǢåüçıÉZÉbÉVÉáÉìÇäÑÇËìñǃÅA
FBCSearchSession ílÇ *session ÉpÉâÉÅÅ[É^Ç…ï‘Ç∑ÅBvCount Ç™É[
ÉçÇÃèÍçáÅAvRefNums ÇÕåüçıëŒè€ÇÃÉ{ÉäÉÖÅ[ÉÄÇ…ëŒÇ∑ÇÈÉ{ÉäÉÖÅ[ÉÄéQ
èΔî‘çÜÇÃîzóÒÇÉ|ÉCÉìÉgÇ∑ÇÈÅBvRefNums ÇÃÇ¢Ç∏ÇÍǩǙçıà¯Çä‹Ç‹Ç»
Ç¢É{ÉäÉÖÅ[ÉÄÇéQèΔǵǃǢÇÈÇΔÅAparamErr Ç™ï‘Ç≥ÇÍÇÈ */
OSErr SetUpVolumeSession (FBCSearchSession* session,
UInt16 vCount, SInt16 *vRefNums) {
OSErr err;
UInt16 i;
FBCSearchSession newsession;
/* ÉçÅ[ÉJÉãïœêîÇÉZÉbÉgÉAÉbÉvÇ∑ÇÈ */
err = noErr;
newsession = NULL;
if (vCount == 0) return paramErr;
if (session == NULL) return paramErr;
if (vRefNums == NULL) return paramErr;
/* êVǵǢÉZÉbÉVÉáÉìÇçÏê¨Ç∑ÇÈ */
err = FBCCreateSearchSession(&newsession);
if (err != noErr) goto bail;
/* vRefNums Ç≈éwíËÇ≥ÇÍǃǢÇÈÉ{ÉäÉÖÅ[ÉÄÇåüçıÇ∑ÇÈ */
for (i=0; i<vCount; i++) {
if (!FBCVolumeIsIndexed(vRefNums[i])) {
err = paramErr;
goto bail;
} else {
err = FBCAddVolumeToSession(newsession,
vRefNums[i]);
if (err != noErr) goto bail;
}
}
/* åãâ Çäiî[ǵǃèàóùÇèIóπÇ∑ÇÈ */
*session = newsession;
return noErr;
bail:
if (newsession != NULL)
FBCDestroySearchSession(newsession);
return err;
}
|
|
ÉäÉXÉg 7
ì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄÇÃÉZÉbÉgÇåüçıÇ∑ÇÈÉZÉbÉVÉáÉìÇÃÉZÉbÉgÉAÉbÉv
|
DZÇÃÉTÉìÉvÉãÇà FBCAddVolumeToSession
ÉãÅ[É`ÉìÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…É{ÉäÉÖÅ[ÉÄÇí«â¡Ç∑ÇÈÇΩÇflÇ…égópÇ≥ÇÍǃǢNjÇ∑ÅBÇ‹ÇΩÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåªç›É^Å[ÉQÉbÉgÇΔǻǡǃǢÇÈÉ{ÉäÉÖÅ[ÉÄDžǬǢǃÉNÉGÉäÅ[ÇçsÇ¡ÇΩÇËÅAíÒãüÇ≥ÇÍǃǢÇÈÉäÉXÉgÇ©ÇÁÉ{ÉäÉÖÅ[ÉÄÇçÌèúÇ∑ÇÈÇΩÇflDžǪÇÃëºÇÃÉãÅ[É`ÉìÇ™égópÇ≥ÇÍǃǢNjÇ∑ÅB
Ç¢Ç≠ǬǩÇÃÉ{ÉäÉÖÅ[ÉÄÇåüçıÇ∑ÇÈÇÊǧDžåüçıÉZÉbÉVÉáÉìÇê›íËÇ∑ÇÈÇΔÅAǪÇÃåüçıÉZÉbÉVÉáÉìÇÕÅA1
ìxåüçıÇçsÇ¡ÇΩå„Ç≈LJÅAÉ^Å[ÉQÉbÉgÉ{ÉäÉÖÅ[ÉÄÇçƒê›íËÇ∑ÇÈDZÇΔÇ»Ç≠åJÇËï‘ǵégópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBåüçıÇé¿çsǵǃåüçıåãâ ÇåüèÿǵÇΩå„ÅAFBCReleaseSessionHits
ÉãÅ[É`ÉìÇåƒÇ—èoÇ∑DZÇΔÇ≈ÅAåüçıÉZÉbÉVÉáÉìÇÕéüÇÃåüçıÇçsǧèÄîıÇêÆÇ¶Ç‹Ç∑ÅBDZÇÃÉãÅ[É`ÉìÇÕÅAíºëOÇ…é¿çsǵÇΩåüçıÇÃåãâ ÇÇ∑Ç◊ǃîjä¸ÇµÇ‹Ç∑Ç™ÅAÉ^Å[ÉQÉbÉgÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇÕǪÇÃNjNjï€éùǵNjÇ∑ÅB
FBCCloneSearchSession
ÉãÅ[É`ÉìÇégǡǃåüçıÉZÉbÉVÉáÉìÇÃÉRÉsÅ[ÇçÏê¨Ç∑ÇÈÇΔÅAÉ^Å[ÉQÉbÉgÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ™ï°êªÇ≥ÇÍÇΩåüçıÉZÉbÉVÉáÉìÇ…ÉRÉsÅ[Ç≥ÇÍÇ‹Ç∑ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
åüçıÇÃé¿çs
FBC
Ç™åüçıÇé¿çsÇ∑ÇÈÇΔÅAèåèÇ…àÍívÇ∑ÇÈÉtÉ@ÉCÉãÇÃÉäÉXÉgÇ™ê∂ê¨Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃÉäÉXÉgÇÕÅuÉqÉbÉgÅvÇΔåƒÇŒÇÍÅAåüçıÉZÉbÉVÉáÉìÇÃì‡ïîÇ…äiî[Ç≥ÇÍÇ‹Ç∑ÅBFBC
Ç≈ÇÕÅAíPåÍÇÃÉäÉXÉgÇä‹ÇfiÉNÉGÉäÅ[ï∂éöóÒÇégópǵÇΩì‡óeÇ…äÓÇ√Ç≠åüçıÅAà»ëOÇÃåüçıÇ≈éÊìæÇµÇΩ
1
ǬNjÇΩÇÕï°êîÇÃÉqÉbÉgÇ…äÓÇ√Ç≠ófiéóåüçıÅAÇ‹ÇΩÇÕÉTÉìÉvÉãÉtÉ@ÉCÉãÇÃÉäÉXÉgÇ…äÓÇ√Ç≠ófiéóåüçıÇÃé¿çsÇóvãÅÇ≈Ç´Ç‹Ç∑ÅBÅuÉäÉXÉg
8ÅvÇÕÅAÉNÉGÉäÅ[Ç…äÓÇ√Ç≠åüçıÇé¿çsÇ∑ÇÈï˚ñ@ÇãÔëÃìIÇ…é¶ÇµÇƒÇ¢Ç‹Ç∑ÅBDZÇÃÉTÉìÉvÉãÇÃÉNÉGÉäÅ[ÇÕÅAçıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈÇ∑Ç◊ǃÇÃÉ{ÉäÉÖÅ[ÉÄÇ≈èåèÇ…àÍívÇ∑ÇÈÉtÉ@ÉCÉãÇåüçıÇ∑ÇÈÇΩÇflÇ…égópÇ≥ÇÍǃǢNjÇ∑ÅB
|
|
OSErr SimpleFindByQuery (char *query, FBCSearchSession *session) {
OSErr err;
FBCSearchSession newsession;
/* ÉçÅ[ÉJÉãïœêîÇÉZÉbÉgÉAÉbÉvǵÅAÉpÉâÉÅÅ[É^ÇÉ`ÉFÉbÉNÇ∑ÇÈ */
if (query[0] == 0) return paramErr;
if (session == NULL) return paramErr;
newsession = NULL;
/* êVǵǢåüçıÉZÉbÉVÉáÉìÇäÑÇËìñǃÇÈ */
err = SimpleSetUpSession(&newsession);
if (err != noErr) goto bail;
/* DZÇÍÇÕÅAé¿ç€Ç…åüçıǵǃÅA
ǪÇÃåãâ ÇåüçıÉZÉbÉVÉáÉìÇ…äiî[Ç∑ÇÈåƒÇ—èoǵ */
err = FBCDoQuerySearch(newsession, query,
NULL, 0, 100, 100);
if (err != noErr) goto bail;
/* åãâ Çï€ë∂ǵǃèàóùÇèIóπÇ∑ÇÈ */
*session = newsession;
return noErr;
bail:
if (newsession != NULL)
FBCDestroySearchSession(newsession);
return err;
}
|
|
ÉäÉXÉg 8
çıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈÇ∑Ç◊ǃÇÃÉ{ÉäÉÖÅ[ÉÄÇëŒè€ÇΔÇ∑ÇÈÉNÉGÉäÅ[Ç…äÓÇ√Ç¢ÇΩåüçı
|
FBCDoExampleSearch Ç‹ÇΩÇÕ
FBCBlindExampleSearch
ÉãÅ[É`ÉìÇégǡǃé¿çsÇ≥ÇÍÇÈåüçıÇÕÅAëºÇÃÉtÉ@ÉCÉãÇ…ófiéóǵÇΩÉtÉ@ÉCÉãÇåüèoÇ∑ÇÈÇΩÇflÇ…égópÇ≈Ç´Ç‹Ç∑ÅBófiéóåüçıÇé¿çsÇ∑ÇÈÇΔÅAÉTÉìÉvÉãÇΔǵǃéwíËǵÇΩÉtÉ@ÉCÉãÇΔófiéóǵÇΩì‡óeÇéùǬÉtÉ@ÉCÉãÇ™åüçıÇ≥ÇÍÇ‹Ç∑ÅBÉTÉìÉvÉãÇÕÅAà»ëOÇÃåüçıÇ≈éÊìæÇµÇΩÉqÉbÉgÇéQèΔÇ∑ÇÈçıà¯ÇΔǵǃéwíËÇ∑ÇÈÇ©ÅAÉfÉBÉXÉNè„ÇÃÉtÉ@ÉCÉãÇéQèΔÇ∑ÇÈ
FSSpec
ÉåÉRÅ[ÉhÇÃÉäÉXÉgÇΔǵǃéwíËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
FBCDoExampleSearch ÅAFBCBlindExampleSearch ÅAÇ®ÇÊÇ—
FBCDoQuerySearch ÇΔǢǧ 3
ǬÇÃåüçıÉãÅ[É`ÉìÇ≈ÇÕÅAåüçıåãâ Ç 1
ǬNjÇΩÇÕï°êîÇÃÉfÉBÉåÉNÉgÉäÇ…äiî[Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇ…å¿íËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃÇÊǧDžå¿íËÇ∑ÇÈÇ…ÇÕÅAÉNÉâÉCÉAÉìÉgÇ≈ÇÕÉ^Å[ÉQÉbÉgÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈ
FSSpec
ÉåÉRÅ[ÉhÇÃÉäÉXÉgÇíÒãüÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBÅuÉäÉXÉg
9ÅvÇÃÉTÉìÉvÉãÇÕÅAåüçıÇÃåãâ Çì¡íËÇÃÉfÉBÉåÉNÉgÉäÇÃÉZÉbÉgÇ…êßå¿Ç∑ÇÈï˚ñ@DžǬǢǃãÔëÃìIÇ…ê‡ñæÇµÇƒÇ¢Ç‹Ç∑ÅB
|
|
enum {
kMaxVols = 20,
maxHits = 10,
maxHitTerms = 10
};
OSErr RestrictedFindByQuery (char *query, UInt16 dirCount,
FSSpec* dirList,
FBCSearchSession* session) {
UInt16 vCount, i;
SInt16 vRefNums[kMaxVols], normalVol;
FBCSearchSession newsession;
vCount = 0;
newsession = NULL;
if (dirList == NULL || dirCount == 0) return paramErr;
if (query == NULL) return paramErr;
if (*query == 0) return paramErr;
if (session == NULL) return paramErr;
/* ÉpÉâÉÅÅ[É^Ç≈éwíËÇ≥ÇÍǃǢÇÈ FSSpec ÇÃÉäÉXÉgÇ©ÇÁ
ÉÜÉjÅ[ÉNÇ»É{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇÇ∑Ç◊ǃé˚èW */
for (i=0; i<dirCount; i++) {
Boolean found;
HParamBlockRec pb;
/* vRefNum Ç™É{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈džÇÈDZÇΔÇämîF */
pb.volumeParam.ioVRefNum = dirList[i].vRefNum;
pb.volumeParam.ioNamePtr = NULL;
pb.volumeParam.ioVolIndex = 0;
if ((err = PBHGetVInfoSync(&pb)) != noErr) goto bail;
normalVol = pb.volumeParam.ioVRefNum;
/* ǪÇÍÇ™Ç∑Ç≈Ç…ÉäÉXÉgì‡Ç…ǻǢDZÇΔÇämîF */
for (found = false, j=0; j<vCount; j++)
if (vRefNums[j] == normalVol) {
found = true;
break;
}
/* É{ÉäÉÖÅ[ÉÄÇÉäÉXÉgÇ…í«â¡ */
if (!found && vCount < kMaxVols)
vRefNums[vCount++] = normalVol;
}
/* åüèoǵÇΩÉ{ÉäÉÖÅ[ÉÄÇégópÇ∑ÇÈÇÊǧDžÉZÉbÉVÉáÉìÇê›íË */
err = SetUpVolumeSession(&newsession, vCount, vRefNums);
if (err != noErr) goto bail;
/* é¿ç€ÇÃåüçıÇçsÇ¢ÅAǪÇÃåãâ ÇåüçıÉZÉbÉVÉáÉìÇ…äiî[ */
err = FBCDoQuerySearch(newsession, (char*)queryTxt,
dirList, dirCount, maxHits, maxHitTerms);
if (err != noErr) goto bail;
/* åãâ Çï€ë∂ǵǃèàóùÇèIóπ */
*session = newsession;
return noErr;
bail:
if (newsession != NULL)
FBCDestroySearchSession(newsession);
return err;
}
|
|
ÉäÉXÉg 9
ì¡íËÇÃÉfÉBÉåÉNÉgÉäÇÃÉZÉbÉgÇëŒè€ÇΔÇ∑ÇÈåüçı
|
DZÇÃÉTÉìÉvÉãÇ≈ÇÕÅAÉpÉâÉÅÅ[É^ÇΔǵǃéwíËÇ≥ÇÍÇΩÉ^Å[ÉQÉbÉgÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈ
FSSpec
ÉåÉRÅ[ÉhÇÃîzóÒÇ©ÇÁíäèoǵÇΩÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇê›íËÇ∑ÇÈÇΩÇflÇ…égópÇ≥ÇÍǃǢNjÇ∑ÅBDZÇÃå„ÅAÉ^Å[ÉQÉbÉgÉfÉBÉåÉNÉgÉäÇÃÉäÉXÉgÇÕ
FBCDoQuerySearch Ç…ìnÇ≥ÇÍÇ‹Ç∑ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
åüçıÉZÉbÉVÉáÉìÇ©ÇÁÇÃèÓïÒÇÃéÊìæ
åüçıÉZÉbÉVÉáÉìÇégópǵǃåüçıÇçsÇ¡ÇΩå„ÅAǪÇÃåüçıÉZÉbÉVÉáÉìÇ…ÇÕèåèÇ…àÍívÇ∑ÇÈ
1
ǬNjÇΩÇÕï°êîÇÃÉtÉ@ÉCÉãÇ…ä÷Ç∑ÇÈèÓïÒÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅBÉNÉâÉCÉAÉìÉgÇ≈ÇÕÅAÉtÉ@ÉCÉãÇÃ
FSSpec
ÉåÉRÅ[ÉhÅAÉtÉ@ÉCÉãÇ…ä‹Ç‹ÇÍÇÈèåèÇ…àÍívǵÇΩíPåÍÅAíºëOÇÃåüçıëÄçÏÇ≈ÉtÉ@ÉCÉãÇ…äÑÇËìñǃÇÁÇÍÇΩÅuÉXÉRÉAÅvÅAÉtÉ@ÉCÉãÇ…ä÷Ç∑ÇÈǪÇÃëºÇÃèÓïÒǻǫÅAå¬ï ÇÃÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇ…ÉAÉNÉZÉXÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÅuÉäÉXÉg
10ÅvÇÕÅAåüçıÇ…ÇÊǡǃï‘Ç≥ÇÍÇΩäeÉqÉbÉgÇÃèÓïÒÇéÊìæÇ∑ÇÈï˚ñ@ÇãÔëÃìIÇ…é¶ÇµÇƒÇ¢Ç‹Ç∑ÅB
|
|
typedef OSErr (*HitProc) (FSSpec theDoc,
float score,
UInt32 nTerms,
FBCWordList hitTerms);
/* SampleHandleHits ÇÕÅAåüçıåãâ ÇóÒãìÇ∑ÇÈÇΩÇflÇ…åüçıèIóπå„Ç…
åƒÇ—èoÇ∑DZÇΔÇ™Ç≈Ç´ÇÈÅBǪÇÍǺÇÍÇÃåüçıÉqÉbÉgÇ…ëŒÇµÇƒÅA
hitFileProc ä÷êîÉpÉâÉÅÅ[É^ÇÕÅAÉ^Å[ÉQÉbÉgÇãLèqÇ∑ÇÈèÓïÒÇégÇ¡
ǃåƒÇ—èoÇ≥ÇÍÇÈ */
OSErr SampleHandleHits (FBCSearchSession session,
HitProc hitFileProc) {
OSErr err;
UInt32 hitCount, i;
FSSpec targetDoc;
float targetScore;
FBCWordList targetTerms;
UInt32 numTerms;
/* ÉçÅ[ÉJÉãïœêîÇÉZÉbÉgÉAÉbÉvǵÅAÉpÉâÉÅÅ[É^ÇÉ`ÉFÉbÉN */
targetTerms = NULL;
if (hitFileProc == NULL) return paramErr;
if (session == NULL) return paramErr;
/* DZÇÃÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÇÃêîÇÉJÉEÉìÉg */
err = FBCGetHitCount(session, &hitCount);
if (err != noErr) goto bail;
/* ÉqÉbÉgëSëÃDžǬǢǃîΩïúèàóùÇé¿çs */
for (i = 0; i < hitCount; i++) {
/* É^Å[ÉQÉbÉgÇ…Ç»ÇÈèëófiÇà FSSpec ÇéÊìæ */
err = FBCGetHitDocument(session, i, &targetDoc);
if (err != noErr) goto bail;
/* DZÇÃèëófiÇÃÉXÉRÉAÇéÊìæ */
err = FBCGetHitScore(session, i, &targetScore);
if (err != noErr) goto bail;
/* DZÇÃèëófiÇ…ä‹Ç‹ÇÍÇÈèåèÇ…àÍívǵÇΩíPåÍÇÃÉäÉXÉgÇéÊìæ */
numTerms = maxHitTerms;
err = FBCGetMatchedWords(session, i, &numTerms,
&targetTerms);
if (err != noErr) goto bail;
/* ÉpÉâÉÅÅ[É^ÇΔǵǃéwíËÇ≥ÇÍǃǢÇÈÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìÇ
åƒÇ—èoǵÅAèÓïÒÇ…ä÷Ç∑ÇÈâΩÇÁÇ©ÇÃèàóùÇé¿çs */
err = hitFileProc(&targetDoc, score, numTerms,
targetTerms);
if (err != noErr) goto bail;
/* éüÇÃîΩïúèàóùÇ…ëJà⁄Ç∑ÇÈëOÇ…ÉNÉäÅ[ÉìÉAÉbÉv */
FBCDestroyWordList(targetTerms, numTerms);
targetTerms = NULL;
}
return noErr;
bail:
if (targetTerms != NULL)
FBCDestroyWordList(targetTerms, numTerms);
return err;
}
|
|
ÉäÉXÉg 10
åüçıÉZÉbÉVÉáÉìÇ≈åüèoÇ≥ÇÍÇΩÇ∑Ç◊ǃÇÃÉtÉ@ÉCÉãÇÃóÒãì
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
ÉRÉìÉeÉìÉcåüçıÉäÉtÉ@ÉåÉìÉX
DZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅAPowerPC FBC ÉâÉCÉuÉâÉäÇ÷Çà CFM
ÉxÅ[ÉXÇÃÉCÉìÉ^ÉtÉFÅ[ÉXDžǬǢǃê‡ñæÇµÇ‹Ç∑ÅBDZÇÍÇÁÇÃÉãÅ[É`ÉìÇégópÇ∑ÇÈ
PowerPC ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ÇÕÅAÅuFind By
ContentÅvÇΔǢǧñºëOÇÃÉâÉCÉuÉâÉäÇ…ëŒÇ∑ÇÈÉäÉìÉNÇçsǧïKóvǙdžÇËÇ‹Ç∑ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
ÉfÅ[É^å^
FBC
Ç…ÇÕÅAà»â∫ÇÃÉfÅ[É^å^Ç™ópà”Ç≥ÇÍǃǢNjÇ∑ÅBDZÇÍÇÁÇÃÉfÅ[É^å^Ç…ëŒÇ∑ÇÈãLâØóÃàÊä«óùÇÕ
FBC ÉâÉCÉuÉâÉäÇ…ÇÊǡǃíÒãüÇ≥ÇÍÇ‹Ç∑ÅBÉNÉâÉCÉAÉìÉgÇ≈ÇÕÅAMemory
Manager
ÇÃåƒÇ—èoǵÇégǡǃÅADZÇÍÇÁÇÃç\ë¢ëÃÇÃäÑÇËìñǃNjÇΩÇÕäÑÇËìñǃâèúÇçsÇÌǻǢÇ≈Ç≠ÇæÇ≥Ç¢ÅB
FBCSearchSession
|
typedef struct OpaqueFBCSearchSession* FBCSearchSession;
|
FBC
Ç…ÇÊǡǃçÏê¨Ç≥ÇÍÇΩåüçıÉZÉbÉVÉáÉìÇÕÅADZÇÃÉfÅ[É^å^ÇÃÉ|ÉCÉìÉ^ïœêîÇâÓǵǃéQèΔÇ≥ÇÍÇ‹Ç∑ÅBDZÇÃÉ|ÉCÉìÉ^Ç…ÇÊǡǃéQèΔÇ≥ÇÍÇÈÉfÅ[É^ÇÃÉtÉHÅ[É}ÉbÉgÇÕÅAFBC
ÉâÉCÉuÉâÉäå≈óLÇÃì‡ïîìIǻLJÇÃÇ≈Ç∑ÅBÉNÉâÉCÉAÉìÉgÇ≈ÇÕÅADZÇÃÉfÅ[É^Ç÷ÇÃíºê⁄ìIÇ»ÉAÉNÉZÉXÇ‚ïœçXÇǵÇÊǧÇΔǵǻǢÇ≈Ç≈Ç≠ÇæÇ≥Ç¢ÅB
FBCWordItem
|
typedef char* FBCWordItem;
|
í èÌÇà C
ï∂éöóÒÅBDZÇÃÉfÅ[É^å^ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ©ÇÁÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇéÊìæÇ∑ÇÈÇΔÇ´Ç…égópǵNjÇ∑ÅB
FBCWordList
|
typedef FBCWordItem* FBCWordList;
|
WordItems
ÇÃîzóÒÅBDZÇÃÉfÅ[É^å^ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ©ÇÁÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇéÊìæÇ∑ÇÈÇΔÇ´Ç…égópǵNjÇ∑ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
åüçıÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÇΔèâä˙âª
éüÇÃÉãÅ[É`ÉìÇÕÅAåüçıÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÇΔîjä¸ÇçsǧÇΩÇflÇ…égópÇ≈Ç´Ç‹Ç∑ÅBåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃêËóLÇ≥ÇÍÇÈãLâØóÃàÊÇÕ
FBC
Ç…ÇÊǡǃèäóLÇ≥ÇÍǃǮÇËÅAåüçıÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÅAÉRÉsÅ[ÅAÇ®ÇÊÇ—îjä¸Ç…égópÇ≈Ç´ÇÈÇÃÇÕÅADZÇÍÇÁÇÃÉãÅ[É`ÉìÇÃÇ›Ç≈Ç∑ÅB
FBCCreateSearchSession
|
OSErr FBCCreateSearchSession(
FBCSearchSession* searchSession);
|
searchSession ÇÕ
FBCSearchSession å^ÇÃïœêîÇÉ|ÉCÉìÉgǵNjÇ∑ÅB
FBCCreateSearchSession
ÇÕêVǵǢåüçıÉZÉbÉVÉáÉìÇäÑÇËìñǃÅAsearchSession
Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈïœêîDžǪÇÃåüçıÉZÉbÉVÉáÉìÇ÷ÇÃéQèΔÇï‘ǵNjÇ∑ÅB
FBCDestroySearchSession
|
OSErr FBCDestroySearchSession(
FBCSearchSession theSession);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
FBCDestroySearchSession
ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃêËóLÇ≥ÇÍǃǢÇÈãLâØóÃàÊÇâï˙ǵNjÇ∑ÅBDZÇÃíÜÇ…ÇÕÅAåüçıÉZÉbÉVÉáÉìÇΔä÷òAÇ√ÇØÇÁÇÍǃǢÇÈÉ{ÉäÉÖÅ[ÉÄê›íËèÓïÒÇΔÉqÉbÉgÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB
FBCCloneSearchSession
|
OSErr FBCCloneSearchSession(
FBCSearchSession original,
FBCSearchSession* clone);
|
original
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
clone ÇÕ FBCSearchSession
å^ÇÃïœêîÇÉ|ÉCÉìÉgǵNjÇ∑ÅB
FBCCloneSearchSession
ÇÕêVǵǢåüçıÉZÉbÉVÉáÉìÇçÏê¨ÇµÅAclone
ÉpÉâÉÅÅ[É^Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈïœêîDžǪÇÃåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Çäiî[ǵNjÇ∑ÅBêVǵǢåüçıÉZÉbÉVÉáÉìÇ…ÉRÉsÅ[Ç≥ÇÍÇÈå≥ÇÃåüçıÉZÉbÉVÉáÉìÇÃèÓïÒÇÃíÜÇ…ÇÕÅAåüçıÉZÉbÉVÉáÉìÇÃÉ^Å[ÉQÉbÉgÇΔÇ»ÇÈÉ{ÉäÉÖÅ[ÉÄÇΔÅAà»ëOÇÃåüçıÇ≈åüèoÇ≥ÇÍÇΩÇ∑Ç◊ǃÇÃÉqÉbÉgÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
åüçıÉZÉbÉVÉáÉìÇÃê›íË
åüçıÉZÉbÉVÉáÉìÇê›íËǵǃÅAåüçıëŒè€Çì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄÇÃÉZÉbÉgÇ…êßå¿Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBéüÇÃÉãÅ[É`ÉìÇégópÇ∑ÇÈÇΔÅAÉNÉâÉCÉAÉìÉgÇÕÅAFBC
Ç…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉZÉbÉgÇ…ÉAÉNÉZÉXÇ≈Ç´ÇÈÇÊǧDžǻÇËÇ‹Ç∑ÅB
FBCAddAllVolumesToSession
|
OSErr FBCAddAllVolumesToSession(
FBCSearchSession theSession,
Boolean includeRemote);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
includeRemote ÇÕÉuÅ[ÉãílÇ≈Ç∑ÅB
FBCAddAllVolumesToSession
ÇÕÅAçıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈÉ}ÉEÉìÉgÉ{ÉäÉÖÅ[ÉÄÇÇ∑Ç◊ǃåüçıÇ∑ÇÈÇÊǧDžåüçıÉZÉbÉVÉáÉìÇê›íËǵNjÇ∑ÅBincludeRemote
Ç™ true
ÇÃèÍçáÇÕÅAÉäÉÇÅ[ÉgÉ{ÉäÉÖÅ[ÉÄÇ™åüçıÉZÉbÉVÉáÉìÇÃÉ^Å[ÉQÉbÉgÉ{ÉäÉÖÅ[ÉÄÉäÉXÉgÇ…ëgÇ›çûÇ‹ÇÍÇ‹Ç∑ÅBçıà¯Ç™çÏê¨Ç≥ÇÍǃǢǻǢÉ{ÉäÉÖÅ[ÉÄÇÕÅAåüçıÉZÉbÉVÉáÉìÇÃÉ^Å[ÉQÉbÉgÉ{ÉäÉÖÅ[ÉÄÉäÉXÉgÇ…í«â¡Ç≥ÇÍÇ‹ÇπÇÒÅB
FBCSetSessionVolumes
|
OSErr FBCSetSessionVolumes(
FBCSearchSession theSession,
const SInt16 *vRefNums,
UInt16 numVolumes);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
vRefNums ÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜ (16
ÉrÉbÉgêÆêî) ÇÃîzóÒÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
numVolumes ÇÕÅAvRefNums
îzóÒÇ…ä‹Ç‹ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇÃêîÇä‹ÇÒÇæêÆêîílÇ≈Ç∑ÅB
FBCSetSessionVolumes
Ç…ÇÊÇËÅAÉNÉâÉCÉAÉìÉgÇÕ 1
ìxÇÃåƒÇ—èoǵÇ≈ÅAåüçıÉZÉbÉVÉáÉìÇÃÉ^Å[ÉQÉbÉgÇΔÇ»ÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ…ï°êîÇÃÉ{ÉäÉÖÅ[ÉÄÇí«â¡Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
FBCAddVolumeToSession
|
OSErr FBCAddVolumeToSession(
FBCSearchSession theSession,
SInt16 vRefNum);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
vRefNum ÇÕ 1
ǬÇÃÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB
FBCAddVolumeToSession
ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ…
1
ǬÇÃÉ{ÉäÉÖÅ[ÉÄÇí«â¡ÇµÇ‹Ç∑ÅBçıà¯Ç™çÏê¨Ç≥ÇÍǃǢǻǢÉ{ÉäÉÖÅ[ÉÄÇÕÉäÉXÉgÇ…í«â¡Ç≥ÇÍÇ‹ÇπÇÒÅB
FBCRemoveVolumeFromSession
|
OSErr FBCRemoveVolumeFromSession(
FBCSearchSession theSession,
SInt16 vRefNum);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
vRefNum ÇÕ 1
ǬÇÃÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB
FBCRemoveVolumeFromSession
ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ©ÇÁéwíËÇ≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄÇçÌèúǵNjÇ∑ÅB
FBCGetSessionVolumeCount
|
OSErr FBCGetSessionVolumeCount(
FBCSearchSession theSession,
UInt16* count);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
count ÇÕÅAåãâ Ç™äiî[Ç≥ÇÍÇÈ 16
ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
FBCGetSessionVolumeCount
ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ…ä‹Ç‹ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÃêîÇ
*count Ç…ï‘ǵNjÇ∑ÅB
FBCGetSessionVolumes
|
OSErr FBCGetSessionVolumes(
FBCSearchSession theSession,
SInt16 *vRefNums,
UInt16* numVolumes);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
vRefNums ÇÕÅAÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜ (16
ÉrÉbÉgêÆêî) ÇÃîzóÒÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
*numVolumes ÇÕ 16
ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅBì¸óÕéûÅADZÇÃílÇÕ
vRefNums
Ç…äiî[Ç≈Ç´ÇÈóvëfÇÃêîÇ≈Ç∑ÅBÇ‹ÇΩèoóÕéûÇ…ÇÕÅADZÇÃílÇ…ÇÕ
vRefNums
Ç…é¿ç€Ç…äiî[Ç≥ÇÍǃǢÇÈóvëfÇÃêîÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅB
FBCGetSessionVolumes
ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ
vRefNums
Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈîzóÒÇ…ï‘ǵNjÇ∑ÅB*numVolumes
Ç…ÇÕîzóÒÇ…ï‘Ç≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇÃêîÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
åüçıÇÃé¿çs
FBC
Ç…ÇÕÅADZÇÃÉZÉNÉVÉáÉìÇ…ãLç⁄Ç≥ÇÍǃǢÇÈåüçıÇé¿çsÇ∑ÇÈÇΩÇflÅA3
ǬÇÃàŸÇ»ÇÈÉãÅ[É`ÉìÇ™ópà”Ç≥ÇÍǃǢNjÇ∑ÅB
FBCGetSessionVolumeCount
|
OSErr FBCDoQuerySearch(
FBCSearchSession theSession,
char* queryText,
const FSSpec targetDirs[ ],
UInt32 numTargets,
UInt32 maxHits,
UInt32 maxHitWords);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
queryText ÇÕÅAåüçıÇ∑ÇÈçÄñ⁄Çä‹Çfi C
å`éÆÇÃï∂éöóÒÇéQèΔǵNjÇ∑ÅB
targetDirs ÇÕÅAÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈ
FSSpec
ÉåÉRÅ[ÉhÇÃîzóÒÇÉ|ÉCÉìÉgǵNjÇ∑ÅBnumTargets
Ç™É[ÉçÇÃèÍçáÅADZÇÃÉpÉâÉÅÅ[É^Ç…ÇÕ NULL
Çê›íËÇ≈Ç´Ç‹Ç∑ÅB
numTargets Ç…ÇÕÅAtargetDirs
Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈîzóÒì‡Çà FSSpec
ÉåÉRÅ[ÉhÇÃêîÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB
maxHits
ÇÕï‘Ç≥ÇÍÇÈÉqÉbÉgÇÃç≈ëÂêîÇ≈Ç∑ÅB
maxHitWords
ÇÕÉåÉ|Å[ÉgÇ≥ÇÍÇÈÉqÉbÉgǵÇΩíPåÍÇÃç≈ëÂêîÇ≈Ç∑ÅB
FBCDoQuerySearch
ÇÕÅAqueryText
Ç≈åüèoÇ≥ÇÍÇÈåüçıçÄñ⁄Ç…äÓÇ√Ç¢ÇΩåüçıÇé¿çsǵNjÇ∑ÅBtargetDirs
ÉpÉâÉÅÅ[É^Ç™ë∂ç›Ç∑ÇÈÇΔ (numTargets
Ç™É[ÉçÇ≈ǻǢÇΔ)ÅAtargetDirs
Ç≈éwíËÇ≥ÇÍÇÈÉfÉBÉåÉNÉgÉäÇ…äiî[Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇæÇØÇ™ÅAåüçıÇ…ÇÊǡǃåüèoÇ≥ÇÍÇÈÉqÉbÉgÇÃíÜÇ…ëgÇ›çûÇ‹ÇÍÇ‹Ç∑ÅB
FBCDoExampleSearch
|
OSErr FBCDoExampleSearch(
FBCSearchSession theSession,
const UInt32* exampleHitNums,
UInt32 numExamples,
const FSSpec targetDirs[ ],
UInt32 numTargets,
UInt32 maxHits,
UInt32 maxHitWords);
|
theSession
Ç…ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç™ä‹Ç‹ÇÍÇ‹Ç∑ÅBDZÇÃÉZÉbÉVÉáÉìÇ…ÇÕÅAà»ëOÇÃåüçıÇ≈ê∂ê¨Ç≥ÇÍÇΩÉqÉbÉgÉäÉXÉgÇ™ä‹Ç‹ÇÍÇƒÇ¢Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
exampleHitNums ÇÕ 32
ÉrÉbÉgêÆêîÇÃîzóÒÇÉ|ÉCÉìÉgǵNjÇ∑ÅB
numExamples
Ç…ÇÕÅAexampleHitNums
Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈîzóÒì‡ÇÃêÆêîÇÃêîÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB
targetDirs ÇÕÅAÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈ
FSSpec
ÉåÉRÅ[ÉhÇÃîzóÒÇÉ|ÉCÉìÉgǵNjÇ∑ÅBnumTargets
Ç™É[ÉçÇÃèÍçáÅADZÇÃÉpÉâÉÅÅ[É^Ç…ÇÕ NULL
Çê›íËÇ≈Ç´Ç‹Ç∑ÅB
numTargets Ç…ÇÕÅAtargetDirs
Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈîzóÒì‡Çà FSSpec
ÉåÉRÅ[ÉhÇÃêîÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB
maxHits
ÇÕï‘Ç≥ÇÍÇÈÉqÉbÉgÇÃç≈ëÂêîÇ≈Ç∑ÅB
maxHitWords
ÇÕÉåÉ|Å[ÉgÇ≥ÇÍÇÈÉqÉbÉgǵÇΩíPåÍÇÃç≈ëÂêîÇ≈Ç∑ÅB
FBCDoExampleSearch
ÇÕÅAëOÇÃåüçıÇ≈åüèoÇ≥ÇÍÇΩÉqÉbÉgÇÉTÉìÉvÉãÇΔǵǃégópǵÅAÉTÉìÉvÉãÉxÅ[ÉXÇÃåüçıÇ‹ÇΩÇÕÅuófiéóÅvåüçıÇé¿çsǵNjÇ∑ÅBexampleHitNums
ÇÕÅAÉTÉìÉvÉãÉtÉ@ÉCÉãÇΔǵǃégópÇ≥ÇÍÇÈDZÇΔÇ…Ç»ÇÈ 1
ǬNjÇΩÇÕï°êîÇÃÉqÉbÉgÇÃçıà¯Çä‹Çfií∑êÆêîÇÃîzóÒÇÉ|ÉCÉìÉgǵNjÇ∑ÅBtargetDirs
ÉpÉâÉÅÅ[É^Ç™ë∂ç›Ç∑ÇÈÇΔ (numTargets
Ç™É[ÉçÇ≈ǻǢÇΔ)ÅAtargetDirs
Ç≈éwíËÇ≥ÇÍÇÈÉfÉBÉåÉNÉgÉäÇ…äiî[Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇæÇØÇ™ÅAåüçıÇ…ÇÊǡǃåüèoÇ≥ÇÍÇÈÉqÉbÉgÇÃíÜÇ…ëgÇ›çûÇ‹ÇÍÇ‹Ç∑ÅB
FBCBlindExampleSearch
|
OSErr FBCBlindExampleSearch(
FSSpec examples[ ],
UInt32 numExamples,
const FSSpec targetDirs[ ],
UInt32 numTargets,
UInt32 maxHits,
UInt32 maxHitWords,
Boolean allIndexes,
Boolean includeRemote,
FBCSearchSession* theSession);
|
examples ÇÕÅAÉtÉ@ÉCÉãÇéQèΔÇ∑ÇÈ
FSSpec ÉåÉRÅ[ÉhÇÃîzóÒÇÉ|ÉCÉìÉgǵNjÇ∑ÅBFBC
ÇÕÅADZÇÍÇÁÇÃÉtÉ@ÉCÉãÇ…ófiéóǵÇΩÉtÉ@ÉCÉãÇåüçıÇ∑ÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB
numExamples Ç…ÇÕÅAexamples
Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈîzóÒì‡Çà FSSpec
ÉåÉRÅ[ÉhÇÃêîÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB
targetDirs ÇÕÅAÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈ
FSSpec
ÉåÉRÅ[ÉhÇÃîzóÒÇÉ|ÉCÉìÉgǵNjÇ∑ÅBnumTargets
Ç™É[ÉçÇÃèÍçáÅADZÇÃÉpÉâÉÅÅ[É^Ç…ÇÕ NULL
Çê›íËÇ≈Ç´Ç‹Ç∑ÅBtargetDirs Ç™
NULL Ç≈Ç»Ç≠ÅAnumTargets
LJÉ[ÉçÇ≈ǻǢèÍçáÇÕÅADZÇÍÇÁÇÃÉfÉBÉåÉNÉgÉäÇ…äiî[Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇæÇØÇ™åüçıÇ…ÇÊǡǃï‘Ç≥ÇÍÇÈÉqÉbÉgÉäÉXÉgÇÃíÜÇ…ëgÇ›çûÇ‹ÇÍÇ‹Ç∑ÅB
numTargets Ç…ÇÕÅAtargetDirs
Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈîzóÒì‡Çà FSSpec
ÉåÉRÅ[ÉhÇÃêîÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB
maxHits
ÇÕï‘Ç≥ÇÍÇÈÉqÉbÉgÇÃç≈ëÂêîÇ≈Ç∑ÅB
maxHitWords
ÇÕÉåÉ|Å[ÉgÇ≥ÇÍÇÈÉqÉbÉgǵÇΩíPåÍÇÃç≈ëÂêîÇ≈Ç∑ÅB
includeRemote ÇÕÉuÅ[ÉãílÇ≈Ç∑ÅB
theSession
ÇÕÅADZÇÃÉãÅ[É`ÉìÇ…ÇÊǡǃçÏê¨Ç≥ÇÍÇÈ
FBCSearchSession
å^ÇÃïœêîÇÉ|ÉCÉìÉgǵNjÇ∑ÅB
FBCBlindExampleSearch
ÇÕêVǵǢåüçıÉZÉbÉVÉáÉìÇçÏê¨ÇµÅAexamples
ÉpÉâÉÅÅ[É^Ç≈éwíËÇ≥ÇÍÇΩ FSSpec
ÉåÉRÅ[ÉhÇÃîzóÒÇ≈éQèΔÇ≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇégǡǃåüçıÇé¿çsǵNjÇ∑ÅBtargetDirs
ÉpÉâÉÅÅ[É^Ç™ë∂ç›Ç∑ÇÈÇΔ (numTargets
Ç™É[ÉçÇ≈ǻǢÇΔ)ÅAtargetDirs
Ç≈éwíËÇ≥ÇÍÇÈÉfÉBÉåÉNÉgÉäÇ…äiî[Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇæÇØÇ™ÅAåüçıÇ…ÇÊǡǃåüèoÇ≥ÇÍÇÈÉqÉbÉgÇÃíÜÇ…ëgÇ›çûÇ‹ÇÍÇ‹Ç∑ÅBincludeRemote
Ç™ true
ÇÃèÍçáÇÕÅAÉäÉÇÅ[ÉgÉ{ÉäÉÖÅ[ÉÄÇ™åüçıÉZÉbÉVÉáÉìÇÃÉ^Å[ÉQÉbÉgÉ{ÉäÉÖÅ[ÉÄÉäÉXÉgÇ…ëgÇ›çûÇ‹ÇÍÇ‹Ç∑ÅB
ÉTÉìÉvÉãÉtÉ@ÉCÉãÇÃàÍïîÇ…çıà¯Ç™çÏê¨Ç≥ÇÍǃǢǻǢèÍçáÇÕÅAçıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇégǡǃåüçıÇ™é¿çsÇ≥ÇÍÅAåüçıèIóπå„ÅAÉGÉâÅ[ÉRÅ[Éh
kFBCsomeFilesNotIndexed
Ç™ï‘Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃèÍçáÅAåüçıÉZÉbÉVÉáÉìÇ™çÏê¨Ç≥ÇÍÅAǪÇÃåüçıÉZÉbÉVÉáÉìÇ÷ÇÃéQèΔÇ™
*theSession Ç…ï‘Ç≥ÇÍÇ‹Ç∑ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
ÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇÃéÊìæ
åüçıèIóπå„ÇÃåüçıÉZÉbÉVÉáÉìÇ…ÇÕÅAåüçıéûÇ…åüèoÇ≥ÇÍÇΩÉqÉbÉgÇÃÉäÉXÉgÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅBDZÇÃÉZÉNÉVÉáÉìÇ…ãLç⁄Ç≥ÇÍǃǢÇÈÇÈÉãÅ[É`ÉìÇégǡǃÅAÉNÉâÉCÉAÉìÉgÇÕåüçıÉZÉbÉVÉáÉìì‡Ç…äiî[Ç≥ÇÍǃǢÇÈÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇ…ÉAÉNÉZÉXÇ≈Ç´ÇÈÇÊǧDžǻÇËÇ‹Ç∑ÅBÉqÉbÉgÉåÉRÅ[ÉhÇ…ÇÕ
0 Ç©ÇÁ count-1 Ç‹Ç≈ÇÃÉCÉìÉfÉbÉNÉXÇ™ïtÇØÇÁÇÍÇ‹Ç∑ÅB
FBCGetHitCount
|
OSErr FBCGetHitCount(
FBCSearchSession theSession,
UInt32* count);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
count ÇÕ 32
ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
FBCGetHitCount ÇÕÅAcount
Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈïœêîÇ…åüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÇÃêîÇê›íËǵNjÇ∑ÅBÉqÉbÉgÉåÉRÅ[ÉhÇ…ÇÕ
0 Ç©ÇÁ count-1
Ç‹Ç≈ÇÃÉCÉìÉfÉbÉNÉXÇ™ïtÇØÇÁÇÍÇ‹Ç∑ÅB
Å@
FBCGetHitDocument
|
OSErr FBCGetHitDocument(
FBCSearchSession theSession,
UInt32 hitNumber,
FSSpec* theDocument);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
hitNumber
ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÉåÉRÅ[ÉhÇéQèΔÇ∑ÇÈÉCÉìÉfÉbÉNÉXílÇ≈Ç∑ÅB
theDocument ÇÕ FSSpec
ÉåÉRÅ[ÉhÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
FBCGetHitDocument
ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÇÃÇ§ÇøÅAÉCÉìÉfÉbÉNÉXÇ™
hitNumber Ç≈džÇÈÉqÉbÉgÇ…ëŒâûÇ∑ÇÈ
FSSpec ÉåÉRÅ[ÉhÇï‘ǵNjÇ∑ÅB
FBCGetHitScore
|
OSErr FBCGetHitScore(
FBCSearchSession theSession,
UInt32 hitNumber,
float* score);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
hitNumber
ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÉåÉRÅ[ÉhÇéQèΔÇ∑ÇÈÉCÉìÉfÉbÉNÉXílÇ≈Ç∑ÅB
score
ÇÕïÇìÆè¨êîì_å^ÇÃïœêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
FBCGetHitScore
ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÇÃÇ§ÇøÅAÉCÉìÉfÉbÉNÉXÇ™
hitNumber
Ç≈džÇÈÉqÉbÉgÇ…äÑÇËìñǃÇÁÇÍǃǢÇÈë√ìñê´ÉXÉRÉAÇï‘ǵNjÇ∑ÅBDZÇÃÉXÉRÉAÇÕÅAíºëOÇ…é¿çsǵÇΩì¡íËÇÃåüçıÉRÉìÉeÉLÉXÉgÇ≈ÇÃåüçıèåèÇ…ëŒÇ∑ÇÈèëófiÇÃë√ìñê´Çï\Ç∑é⁄ìxÇ≈Ç∑ÅBÉXÉRÉAÇÕ
0.0 - 1.0
ÇÃîÕàÕÇ…ïWèÄâªÇ≥ÇÍÅAëŒè€ÇΔÇ»ÇÈåüçıÇÃíÜÇ≈ç≈LJë√ìñê´ÇÃçÇÇ¢ÉqÉbÉgÇÕèÌÇ…
1.0 ÇΔǢǧÉXÉRÉAÇéùÇøÇ‹Ç∑ÅB
FBCGetMatchedWords
|
OSErr FBCGetMatchedWords(
FBCSearchSession theSession,
UInt32 hitNumber,
UInt32* wordCount,
FBCWordList* list);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
hitNumber
ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÉåÉRÅ[ÉhÇéQèΔÇ∑ÇÈÉCÉìÉfÉbÉNÉXílÇ≈Ç∑ÅB
wordCount ÇÕ 32
ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
list ÇÕ FBCWordList
å^ÇÃïœêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
FBCGetMatchedWords
ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÇÃÇ§ÇøÅAÉCÉìÉfÉbÉNÉXÇ™
hitNumber
Ç≈džÇÈÉqÉbÉgÇ…ëŒâûÇ∑ÇÈèåèÇ…àÍívǵÇΩíPåÍÇÃÉäÉXÉgÇï‘ǵNjÇ∑ÅBDZÇÃíPåÍÇÃÉäÉXÉgÇÕÅAǪÇÃÉqÉbÉgÇ™ï‘Ç≥ÇÍÇΩóùóRÇãÔëÃìIÇ…é¶ÇµÇ‹Ç∑ÅBílÇ™ï‘Ç≥ÇÍÇÈÇΔÇ´ÅA*list
Ç…ÇÕíPåÍÉäÉXÉgç\ë¢ëÃÇ÷ÇÃÉ|ÉCÉìÉ^Ç™ä‹Ç‹ÇÍÅA*wordCount
Ç…ÇÕǪÇÃç\ë¢ëÃÇ…ä‹Ç‹ÇÍÇÈÉGÉìÉgÉäÇÃêîÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅBǻǮÅAèàóùÇ™èIóπǵÇΩÇΔÇ´Ç…ÇÕÅAFBCDestroyWordList
ÇåƒÇ—èoǵǃÅADZÇÃç\ë¢ëÃÇämé¿Ç…îjä¸ÇµÇƒÇ≠ÇæÇ≥Ç¢ÅB
ÉqÉbÉgÇ…ëŒâûÇ∑ÇÈèåèÇ…àÍívǵÇΩíPåÍÇÕÉqÉbÉgǪÇÃLJÇÃÇÃíÜÇ…äiî[Ç≥ÇÍÇÈÇΩÇflÅAǪÇÍÇÁÇÃåüçıÇÕçÇë¨Ç…é¿çsÇ≥ÇÍÇ‹Ç∑ÅB
FBCGetTopicWords
|
OSErr FBCGetTopicWords(
FBCSearchSession theSession,
UInt32 hitNumber,
UInt32* wordCount,
FBCWordList* list);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
hitNumber
ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÉåÉRÅ[ÉhÇéQèΔÇ∑ÇÈÉCÉìÉfÉbÉNÉXílÇ≈Ç∑ÅB
wordCount ÇÕ 32
ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
list ÇÕ FBCWordList
å^ÇÃïœêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
FBCGetTopicWords
ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÇÃÇ§ÇøÅAÉCÉìÉfÉbÉNÉXÇ™
hitNumber
Ç≈džÇÈÉqÉbÉgÇ…ëŒâûÇ∑ÇÈÉgÉsÉbÉNÇï\Ç∑íPåÍÇÃÉäÉXÉgÇï‘ǵNjÇ∑ÅBDZÇÃíPåÍÇÃÉäÉXÉgÇÕÅAÅuâΩÇ…ä÷Ç∑ÇÈèëófiÇ»ÇÃÇ©ÅvÇΔǢǧñ‚ǢDžëŒÇ∑ÇÈéËǙǩÇËÇó^ǶNjÇ∑ÅBílÇ™ï‘Ç≥ÇÍÇÈÇΔÇ´ÅA*list
Ç…ÇÕíPåÍÉäÉXÉgç\ë¢ëÃÇ÷ÇÃÉ|ÉCÉìÉ^Ç™ä‹Ç‹ÇÍÅA*wordCount
Ç…ÇÕǪÇÃç\ë¢ëÃÇ…ä‹Ç‹ÇÍÇÈÉGÉìÉgÉäÇÃêîÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅBǻǮÅAèàóùÇ™èIóπǵÇΩÇΔÇ´Ç…ÇÕÅAFBCDestroyWordList
ÇåƒÇ—èoǵǃÅADZÇÃç\ë¢ëÃÇämé¿Ç…îjä¸ÇµÇƒÇ≠ÇæÇ≥Ç¢ÅB
ì¡íËÇÃÉqÉbÉgÇ…ëŒâûÇ∑ÇÈÉgÉsÉbÉNÇï\Ç∑íPåÍÇÃÉäÉXÉgÇÕçıà¯ÉtÉ@ÉCÉãÇâÓǵǃê∂ê¨Ç≥ÇÍÇÈïKóvǙdžÇÈÇΩÇflÅADZÇÃåƒÇ—èoǵÇÃé¿çsÇÕ
FBCGetMatchedWords
ÇÃé¿çsÇÊÇËLJǩǻÇËíxÇ≠Ç»ÇËÇ‹Ç∑ÅB
FBCDestroyWordList
|
OSErr FBCDestroyWordList(
FBCWordList theList,
UInt32 wordCount);
|
theList
ÇÕíPåÍÉäÉXÉgÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
wordCount
ÇÕÉäÉXÉgÇ…ä‹Ç‹ÇÍÇÈíPåÍÇÃêîÇ≈Ç∑ÅB
FBCDestroyWordList
ÇÕÅAFBCGetMatchedWords Ç‹ÇΩÇÕ
FBCGetTopicWords
Ç…ÇÊǡǃäÑÇËìñǃÇÁÇÍÇΩíPåÍÉäÉXÉgÇîjä¸ÇµÇ‹Ç∑ÅB
FBCReleaseSessionHits
|
OSErr FBCReleaseSessionHits(
FBCSearchSession theSession);
|
theSession
ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅBDZÇÃÉZÉbÉVÉáÉìÇ…ÇÕåüçıÇ…ÇÊǡǃê∂ê¨Ç≥ÇÍÇΩÉqÉbÉgÇ™ä‹Ç‹ÇÍÇÈDZÇΔǙdžÇËÇ‹Ç∑ÅB
FBCReleaseSessionHits
ÇÕÅAíºëOÇÃåüçıÇ≈éÊìæÇµÇΩÉqÉbÉgÇ…ä÷òAÇ∑ÇÈäiî[èÓïÒÇåüçıÉZÉbÉVÉáÉìÇ©ÇÁçÌèúǵNjÇ∑ÅBÇΩÇæÇµÅAÉ{ÉäÉÖÅ[ÉÄê›íËèÓïÒÇÕǪÇÃNjNjï€éùÇ≥ÇÍÇÈÇΩÇflÅADZÇÃåƒÇ—èoǵÇÃé¿çså„ÅAåüçıÉZÉbÉVÉáÉìÇÕéüÇÃåüçıÇé¿çsÇ∑ÇÈèÄîıÇêÆÇ¶Ç‹Ç∑ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
ÉeÉLÉXÉgÇÃóvñÒ
DZÇÃåƒÇ—èoǵÇÕÅAì¸óÕÉeÉLÉXÉgÇÃíÜÇ≈åüèoÇ≥ÇÍÇΩÅuç≈LJë√ìñê´ÇÃçÇÇ¢ÅvÉZÉìÉeÉìÉXÇä‹ÇfióvñÒÇê∂ê¨ÇµÇ‹Ç∑ÅB
FBCSummarize
|
OSErr FBCSummarize(
void* inBuf,
UInt32 inLength,
void* outBuf,
UInt32* outLength,
UInt32* numSentences);
|
inBuf
ÇÕóvñÒÇ≥ÇÍÇÈÉeÉLÉXÉgÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
inLength ÇÕ inBuf
Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈÉeÉLÉXÉgÇÃí∑Ç≥Ç≈Ç∑ÅB
outBuf
ÇÕóvñÒÇ™äiî[Ç≥ÇÍÇÈÉoÉbÉtÉ@ÇÉ|ÉCÉìÉgǵNjÇ∑ÅB
outLength ÇÕ 32
ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅBì¸óÕéûÅADZÇÃílÇ…ÇÕ
outBuf
Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈÉoÉbÉtÉ@ÇÃÉTÉCÉYÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅBÇ‹ÇΩèoóÕéûÇ…ÇÕÅAoutBuf
Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈÉoÉbÉtÉ@Ç…äiî[Ç≥ÇÍǃǢÇÈÉfÅ[É^ÇÃé¿ç€ÇÃí∑Ç≥Ç™ê›íËÇ≥ÇÍÇ‹Ç∑ÅB
numSentences ÇÕ 32
ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅBì¸óÕéûÅADZÇÃílÇÕóvñÒÇΔǵǃñ]NjǵǢÉZÉìÉeÉìÉXÇÃç≈ëÂêîÇ≈Ç∑ÅBÇ‹ÇΩèoóÕéûÇ…ÇÕÅADZÇÃílÇ…ÇÕê∂ê¨Ç≥ÇÍÇΩÉZÉìÉeÉìÉXÇÃé¿ç€ÇÃêîÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅBì¸óÕéûÇ…
numSentences Ç™ 0 Ç≈džÇÈÇΔÅAFBC
ÇÕì¸óÕÉoÉbÉtÉ@Ç…ä‹Ç‹ÇÍǃǢÇÈÉZÉìÉeÉìÉXÇÃêîÇéÊÇËèoǵÅAǪÇÍÇ
10 Ç≈èúéZǵNjÇ∑ÅBǪÇÃåvéZåãâ Ç™ 0
ÇÃèÍçáÇÕÅAç≈ëÂêîÇÃílÇΔǵǃ 1
Ç™égópÇ≥ÇÍÇ‹Ç∑ÅBÇ‹ÇΩÅAǪÇÃåvéZåãâ Ç™ 10
Çí¥Ç¶ÇÈèÍçáÇÕÅAç≈ëÂêîÇÃílÇΔǵǃ 10 Ç™égópÇ≥ÇÍÇ‹Ç∑ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
É{ÉäÉÖÅ[ÉÄÇ…ä÷Ç∑ÇÈèÓïÒÇÃéÊìæ
FBC
Ç…ÇÕÅAÉ{ÉäÉÖÅ[ÉÄÇ…ä÷Ç∑ÇÈèÓïÒÇ…ÉAÉNÉZÉXÇ∑ÇÈà»â∫ÇÃÇÊǧǻÉÜÅ[ÉeÉBÉäÉeÉBÉãÅ[É`ÉìÇ™ópà”Ç≥ÇÍǃǢNjÇ∑ÅB
FBCVolumeIsIndexed
|
Boolean FBCVolumeIsIndexed (SInt16 theVRefNum);
|
theVRefNum
ÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB
FBCVolumeIsIndexed
ÇÕÅAéwíËÇ≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄÇ…çıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈèÍçáÇ…
true Çï‘ǵNjÇ∑ÅB
FBCVolumeIsRemote
|
Boolean FBCVolumeIsRemote(SInt16 theVRefNum);
|
theVRefNum
ÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB
FBCVolumeIsRemote
ÇÕÅAéwíËÇ≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄÇ™ÉäÉÇÅ[ÉgÉTÅ[Éoè„DždžÇÈèÍçáÇ…
true
Çï‘ǵNjÇ∑ÅBÉNÉâÉCÉAÉìÉgÇ≈ÇÕÅAÉlÉbÉgÉèÅ[ÉNÉ{ÉäÉÖÅ[ÉÄÇåüçıëŒè€Ç©ÇÁèúäOǵǃÅAÉlÉbÉgÉèÅ[ÉNÇÃíxâÑÇâÒîÇ≈Ç´Ç‹Ç∑ÅB
FBCVolumeIndexTimeStamp
|
OSErr FBCVolumeIndexTimeStamp(SInt16 theVRefNum,
UInt32* timeStamp);
|
theVRefNum
ÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB
timeStamp ÇÕïÑçÜǻǵ 32
ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
FBCVolumeIndexTimeStamp
ÇÕÅAÉ{ÉäÉÖÅ[ÉÄÇÃçıà¯Ç™ç≈å„Ç…çXêVÇ≥ÇÍÇΩì˙éûÇï‘ǵNjÇ∑ÅBtimeStamp
Ç…ï‘Ç≥ÇÍÇÈílÇÕÅAGetDateTime
Ç…ÇÊǡǃï‘Ç≥ÇÍÇÈílÇΔìØÇ∂ÉtÉHÅ[É}ÉbÉgÇ≈Ç∑ÅB
FBCVolumeIndexPhysicalSize
|
OSErr FBCVolumeIndexPhysicalSize(SInt16 theVRefNum,
UInt32* size);
|
theVRefNum
ÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB
size ÇÕïÑçÜǻǵ 32
ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
|
FBCVolumeIndexPhysicalSize
ÇÕÉ{ÉäÉÖÅ[ÉÄÇÃçıà¯ÉtÉ@ÉCÉãÇÃÉTÉCÉYÇÉoÉCÉgíPà Ç≈ï‘ǵNjÇ∑ÅB
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
É{ÉäÉÖÅ[ÉÄÅAÉtÉHÉãÉ_ÅAÇ®ÇÊÇ—ÉtÉ@ÉCÉãÇÃçıà¯çÏê¨
ÉRÉìÉeÉìÉcåüçıÇ…ÇÕêVǵǢ API
Ç™í«â¡Ç≥ÇÍÅAêVãKÉtÉ@ÉCÉãÇ‹ÇΩÇÕïœçXÇ≥ÇÍÇΩÉtÉ@ÉCÉãÇÃçıà¯Çë¶ç¿Ç…çÏê¨Ç≈Ç´ÇÈÇÊǧDžǻÇËNjǵÇΩÅBêVǵǢÉãÅ[É`ÉìÇÕéüÇÃÇÊǧDžêÈåæÇ≥ÇÍÇ‹Ç∑ÅB
FBCIndexItems
|
OSErr FBCIndexItems(
FSSpecArrayPtr theItems,
UInt32 itemCount);
|
theItems
ÇÕÅAçıà¯ÇçÏê¨Ç∑ÇÈÉtÉ@ÉCÉãÇéQèΔÇ∑ÇÈ FSSpec
ÉåÉRÅ[ÉhÇÃîzóÒÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
itemCount ÇÕ FSSpec
ÉåÉRÅ[ÉhÇÃîzóÒÇ…ä‹Ç‹ÇÍÇÈçÄñ⁄ÇÃêîÇ≈Ç∑ÅB
FBCIndexItems
ÇÕÅAêÊì™ÇÃÉpÉâÉÅÅ[É^Ç…É|ÉCÉìÉ^ÇΔǵǃìnÇ≥ÇÍÇΩ
FSSpec
ÉåÉRÅ[ÉhÇÃîzóÒÇÃíÜÇ≈éQèΔÇ≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇÃçıà¯ÇçÏê¨ÇµÇ‹Ç∑
(Ç‹ÇΩÇÕçıà¯ÇçÏê¨ÇµíºÇµÇ‹Ç∑)ÅBÉtÉ@ÉCÉãÇä‹ÇfiÉ{ÉäÉÖÅ[ÉÄÇ™Ç∑Ç≈Ç…çıà¯ÇéùǡǃǢÇÈèÍçáÅAǪÇÃèëófiÇÕä˘ë∂ÇÃçıà¯Ç…í«â¡Ç≥ÇÍÅAçıà¯Ç™çƒìxçÏê¨Ç≥ÇÍÇ‹Ç∑ÅBÇ‹ÇΩÅAÉ{ÉäÉÖÅ[ÉÄÇ…çıà¯Ç™ä‹Ç‹ÇÍǃǢǻǢèÍçáÇÕÅAêVǵǢçıà¯Ç™çÏê¨Ç≥ÇÍÇ‹Ç∑ÅB
í èÌÅAFBCIndexItems
ÇÕÅAçıà¯Çä‹ÇfiÉ{ÉäÉÖÅ[ÉÄÇ≈ÉtÉ@ÉCÉãÇï€ë∂
(Ç‹ÇΩÇÕÉtÉ@ÉCÉãÇçXêV)
ǵÇΩå„Ç…åƒÇ—èoǵNjÇ∑ÅBDZÇÍÇ…ÇÊÇËÅAÉÜÅ[ÉUÇÕì¡Ç…âΩÇÁÇ©ÇÃëÄçÏÇçsǧDZÇΔÇ»Ç≠ÅAçıà¯ÇèÌÇ…ç≈êVÇÃèÛë‘Ç…ï€Ç¬Ç±ÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉ{ÉäÉÖÅ[ÉÄÇ…çıà¯Ç™ä‹Ç‹ÇÍǃǢÇÈǩǫǧǩÇîªífÇ∑ÇÈï˚ñ@DžǬǢǃÇÕÅASherlock
ÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB
|
å›ä∑ê´Ç…ä÷Ç∑ÇÈíçà”
FBCIndexItems
ÇΔǢǧÉVÉìÉ{ÉãÇÕÅAÅuÉRÉìÉeÉìÉcåüçıÅvã§óLÉâÉCÉuÉâÉäÇÃÉIÉäÉWÉiÉãÉoÅ[ÉWÉáÉìÇ©ÇÁÉGÉNÉXÉ|Å[ÉgÇ≥ÇÍǃǢNjÇπÇÒÅBDZÇÃÉãÅ[É`ÉìÇégópÇ∑ÇÈïKóvÇÃdžÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ÇÕÅADZÇÃÉVÉìÉ{ÉãÇ÷ÇÃé„Ç¢ÉäÉìÉNÇçsÇ¢ÅAÇ≥ÇÁÇ…é¿ç€Ç…åƒÇ—èoǵǃǛÇÈëOÇ…ÅADZÇÃÉãÅ[É`ÉìÇ™ë∂ç›Ç∑ÇÈǩǫǧǩÇÉeÉXÉgǵǃÇ≠ÇæÇ≥Ç¢ÅBDZÇÍÇçsǧÇΩÇflÇÃÉeÉNÉjÉbÉNDžǬǢǃÇÕÅAÉeÉNÉjÉJÉãÉmÅ[ÉgÅuTN1083
Code Fragment Manager
ÉxÅ[ÉXÇÃã§óLÉâÉCÉuÉâÉäÇ÷ÇÃé„Ç¢ÉäÉìÉNÅvÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB
|
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
ÉqÅ[ÉvÉXÉyÅ[ÉXÇÃó\ñÒ
FBC
ÇÃÉNÉâÉCÉAÉìÉgÇÕÅAåüçıÇé¿çsÇ∑ÇÈëOÇ…ÅAÉqÅ[ÉvÉ]Å[ÉìÇÃíÜÇ…ÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìÇ≈égópÇ∑ÇÈÉXÉyÅ[ÉXÇó\ñÒÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
FBCSetHeapReservation
|
void FBCSetHeapReservation(UInt32 bytes);
|
bytes
ÇÕó\ñÒÇ∑ÇÈÉoÉCÉgêîÇä‹ÇfiêÆêîílÇ≈Ç∑ÅB
FBCSetHeapReservation
ÇÕÅAåüçıíÜÇ…ÉNÉâÉCÉAÉìÉgÇÃÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìÇ™åƒÇ—èoÇ≥ÇÍÇÈÇΩÇ—Ç…ÅAFBC
Ç™ï€èÿÇ∑ÇÈÉNÉâÉCÉAÉìÉgÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉqÅ[ÉvÇ≈égópâ¬î\Ç»ÉoÉCÉgêîÇê›íËǵNjÇ∑ÅBDZÇÃÉãÅ[É`ÉìÇåƒÇ—èoǵǃÉqÅ[ÉvÉXÉyÅ[ÉXÇñæé¶ìIÇ…ó\ñÒǵǻǢÇΔÅA200K
ÇÃÉXÉyÅ[ÉXÇ™é©ìÆìIÇ…ó\ñÒÇ≥ÇÍÇ‹Ç∑ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
ÉAÉvÉäÉPÅ[ÉVÉáÉìíËã`ÇÃÉãÅ[É`Éì
ÉNÉâÉCÉAÉìÉgÇÕåüçıíÜÇ…íËä˙ìIÇ…åƒÇ—èoÇ≥ÇÍÇÈÉãÅ[É`ÉìÇéwíËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃÉãÅ[É`ÉìÇÕÅAåüçıÇÃÉXÉeÅ[É^ÉXÇ…ä÷Ç∑ÇÈèÓïÒÇΔÅAåüçıÇ™äÆóπÇ∑ÇÈëOÇ…åüçıÇÉLÉÉÉìÉZÉãÇ∑ÇÈÉIÉvÉVÉáÉìÇÃóºï˚ÇÉNÉâÉCÉAÉìÉgÇ…íÒãüǵNjÇ∑ÅB
ÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìÇÕéüÇÃÇÊǧDžíËã`Ç≥ÇÍÇ‹Ç∑ÅB
FBCCallbackProcPtr
|
typedef Boolean (*FBCCallbackProcPtr)(
UInt16 phase,
float percentDone,
void *data);
|
phase
ÇÕÅAåüçıÇÃåªç›ÇÃÉXÉeÅ[É^ÉXÇé¶Ç∑ÅAà»â∫ÇÃíËêîÇÃÇ¢Ç∏ÇÍÇ©Çä‹ÇÒÇæ
16 ÉrÉbÉgêÆêîÇ≈Ç∑
|
enum {
kFBCphSearching = 6,
kFBCphMakingAccessAccessor = 7,
kFBCphAccessWaiting = 8,
kFBCphSummarizing = 9,
kFBCphIdle = 10,
kFBCphCanceling = 11
};
|
percentDone ÇÕ 0.0 - 1.0
ÇÃîÕàÕÇÃêiíªèÛãµÇé¶Ç∑ílÇ≈Ç∑ÅB
data Ç…ÇÕÅAFBCSetCallback ÇÃ
data
ÉpÉâÉÅÅ[É^Ç…éwíËǵÇΩílÇΔìØÇ∂ílÇ™ä‹Ç‹ÇÍÇ‹Ç∑
åüçıÇ™êiçsǵǃǢÇÈä‘Ç…ÉVÉXÉeÉÄÇÃÉçÉbÉNÉAÉbÉvÇ™î≠ê∂Ç∑ÇÈÇÃÇñhÇÆÇΩÇflÅAÉRÅ[ÉãÉoÉbÉNÇ™íºê⁄ìIÇ‹ÇΩÇÕä‘ê⁄ìIÇ…
WaitNextEvent
ÇåƒÇ—èoÇ∑ÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅB
ÉRÅ[ÉãÉoÉbÉNä÷êîÇ™ true
Çï‘Ç∑ÇΔÅAêiçsíÜÇÃåüçıÇÕÉLÉÉÉìÉZÉãÇ≥ÇÍÇ‹Ç∑ÅB
FBCSetCallback
|
void FBCSetCallback(FBCCallbackProcPtr fn, void* data);
|
fn
ÇÕégópÇ∑ÇÈÉRÅ[ÉãÉoÉbÉNä÷êîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
data
ÇÕégópÇ∑ÇÈÉRÅ[ÉãÉoÉbÉNä÷êîÇ…ìnÇ≥ÇÍÇÈílÇ≈Ç∑ÅB
|
FBCSetCallback
ÇÕÅAåüçıíÜÇ…åƒÇ—èoÇ≥ÇÍÇÈÉRÅ[ÉãÉoÉbÉNä÷êîÇê›íËǵNjÇ∑ÅBÉNÉâÉCÉAÉìÉgÇ™ÉRÅ[ÉãÉoÉbÉNä÷êîÇíËã`ǵǃǢǻǢèÍçáÇÕÅAÉfÉtÉHÉãÉgÇÃÉRÅ[ÉãÉoÉbÉNä÷êîÇ™égópÇ≥ÇÍÇ‹Ç∑ÅBÉfÉtÉHÉãÉgÇÃÉRÅ[ÉãÉoÉbÉNä÷êîÇÕ
WaitNextEvent ÇåƒÇ—èoǵǃÅAfalse
Çï‘ǵNjÇ∑ÅB
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
ÉRÉìÉeÉìÉcåüçıÇà C åæåÍÉTÉ}Éä
íËêî
|
enum {
gestaltFBCIndexingState = 'fbci',
gestaltFBCindexingSafe = 0,
gestaltFBCindexingCritical = 1
};
enum {
gestaltFBCVersion = 'fbcv',
gestaltFBCCurrentVersion = 0x0011
};
enum { /* ÉGÉâÅ[ÉRÅ[Éh */
kFBCvTwinExceptionErr = -30500,
/*ǪÇÃëºÇÃÉGÉâÅ[*/
kFBCnoIndexesFound = -30501,
kFBCallocFailed = -30502,
/*ǪÇÃëºÇÃÉGÉâÅ[*/
kFBCbadParam = -30503,
kFBCfileNotIndexed = -30504,
kFBCbadIndexFile = -30505,
/*ïsê≥Ç» FSSpecÅAÇ‹ÇΩÇÕÉtÉ@ÉCÉãì‡ÇÃÉfÅ[É^Ç™ïsê≥*/
kFBCtokenizationFailed = -30512,
/*èëófiÇ‹ÇΩÇÕÉNÉGÉäÅ[Ç©ÇÁì«Ç›çûǛǙÇ≈ǴǻǢ*/
kFBCindexNotFound = -30518,
kFBCnoSearchSession = -30519,
kFBCaccessCanceled = -30521,
kFBCindexNotAvailable = -30523,
kFBCsearchFailed = -30524,
kFBCsomeFilesNotIndexed = -30525,
kFBCillegalSessionChange = -30526,
/*ÉqÉbÉgÇä‹ÇfiÉZÉbÉVÉáÉìÇ… */
/*É{ÉäÉÖÅ[ÉÄÇÃí«â¡Ç‹ÇΩÇÕçÌèúÇééÇ›ÇΩ*/
kFBCanalysisNotAvailable = -30527,
kFBCbadIndexFileVersion = -30528,
kFBCsummarizationCanceled = -30529,
kFBCbadSearchSession = -30531,
kFBCnoSuchHit = -30532
};
enum { /* ÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìÇ…ëóÇÁÇÍÇΩÉRÅ[Éh */
kFBCphSearching = 6,
kFBCphMakingAccessAccessor = 7,
kFBCphAccessWaiting = 8,
kFBCphSummarizing = 9,
kFBCphIdle = 10,
kFBCphCanceling = 11
};
|
ÉfÅ[É^å^
|
/* åüçıÇ…ëŒÇ∑ÇÈÉXÉeÅ[É^ÉXèÓïÒÇÃÉRÉåÉNÉVÉáÉì*/
typedef struct OpaqueFBCSearchSession* FBCSearchSession;
/* í èÌÇà C ï∂éöóÒ (ÉqÉbÉg/èëófiÇÃçÄñ⁄Ç…égópÇ≥ÇÍÇÈ)*/
typedef char* FBCWordItem;
/* WordItems ÇÃîzóÒ*/
typedef FBCWordItem* FBCWordList;
|
åüçıÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÇΔèâä˙âª
|
OSErr FBCCreateSearchSession(
FBCSearchSession* searchSession);
OSErr FBCDestroySearchSession(
FBCSearchSession theSession);
OSErr FBCCloneSearchSession(
FBCSearchSession original,
FBCSearchSession* clone);
|
åüçıÉZÉbÉVÉáÉìÇÃê›íË
|
OSErr FBCAddAllVolumesToSession(
FBCSearchSession theSession,
Boolean includeRemote);
OSErr FBCSetSessionVolumes(
FBCSearchSession theSession,
const SInt16 vRefNums[ ],
UInt16 numVolumes);
OSErr FBCAddVolumeToSession(
FBCSearchSession theSession,
SInt16 vRefNum);
OSErr FBCRemoveVolumeFromSession(
FBCSearchSession theSession,
SInt16 vRefNum);
OSErr FBCGetSessionVolumeCount(
FBCSearchSession theSession,
UInt16* count);
OSErr FBCGetSessionVolumes(
FBCSearchSession theSession,
SInt16 vRefNums[ ],
UInt16* numVolumes);
|
åüçıÇÃé¿çs
|
OSErr FBCDoQuerySearch(
FBCSearchSession theSession,
char* queryText,
const FSSpec targetDirs[ ],
UInt32 numTargets,
UInt32 maxHits,
UInt32 maxHitWords);
OSErr FBCDoExampleSearch(
FBCSearchSession theSession,
const UInt32* exampleHitNums,
UInt32 numExamples,
const FSSpec targetDirs[ ],
UInt32 numTargets,
UInt32 maxHits,
UInt32 maxHitWords);
OSErr FBCBlindExampleSearch(
FSSpec examples[ ],
UInt32 numExamples,
const FSSpec targetDirs[ ],
UInt32 numTargets,
UInt32 maxHits,
UInt32 maxHitWords,
Boolean allIndexes,
Boolean includeRemote,
FBCSearchSession* theSession);
|
ÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇÃéÊìæ
|
OSErr FBCGetHitCount(
FBCSearchSession theSession,
UInt32* count);
OSErr FBCGetHitDocument(
FBCSearchSession theSession,
UInt32 hitNumber,
FSSpec* theDocument);
OSErr FBCGetHitScore(
FBCSearchSession theSession,
UInt32 hitNumber,
float* score);
OSErr FBCGetMatchedWords(
FBCSearchSession theSession,
UInt32 hitNumber,
UInt32* wordCount,
FBCWordList* list);
OSErr FBCGetTopicWords(
FBCSearchSession theSession,
UInt32 hitNumber,
UInt32* wordCount,
FBCWordList* list);
OSErr FBCDestroyWordList(
FBCWordList theList,
UInt32 wordCount);
OSErr FBCReleaseSessionHits(
FBCSearchSession theSession);
|
ÉeÉLÉXÉgÇÃóvñÒ
|
OSErr FBCSummarize(
void* inBuf,
UInt32 inLength,
void* outBuf,
UInt32* outLength,
UInt32* numSentences);
|
É{ÉäÉÖÅ[ÉÄÇ…ä÷Ç∑ÇÈèÓïÒÇÃéÊìæ
|
Boolean FBCVolumeIsIndexed (SInt16 theVRefNum);
Boolean FBCVolumeIsRemote(SInt16 theVRefNum);
OSErr FBCVolumeIndexTimeStamp(SInt16 theVRefNum,
UInt32* timeStamp);
OSErr FBCVolumeIndexPhysicalSize(SInt16 theVRefNum,
UInt32* size);
|
ÉtÉ@ÉCÉãÅAÉtÉHÉãÉ_ÅAÇ®ÇÊÇ—É{ÉäÉÖÅ[ÉÄÇÃçıà¯çÏê¨
|
OSErr FBCIndexItems(
FSSpecArrayPtr theItems,
UInt32 itemCount);
|
ÉqÅ[ÉvÉXÉyÅ[ÉXÇÃó\ñÒ
|
void FBCSetHeapReservation(UInt32 bytes);
|
ÉAÉvÉäÉPÅ[ÉVÉáÉìíËã`ÇÃÉãÅ[É`Éì
|
typedef Boolean (*FBCCallbackProcPtr)(
UInt16 phase,
float percentDone,
void *data);
void FBCSetCallback(FBCCallbackProcPtr fn, void* data);
|
|
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
éQçlï∂å£
ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ
çXêVì˙: 1999 îN 10 åé 5 ì˙
|